home *** CD-ROM | disk | FTP | other *** search
- END(3C) Last changed: 4-12-99
-
-
- NNAAMMEE
- eenndd, eetteexxtt, eeddaattaa, __eenndd, __eetteexxtt, __eeddaattaa, eepprrooll, __fftteexxtt, __ffddaattaa, __ffbbssss,
- __rrtt__ssyymmbbooll__ttaabbllee, __rrtt__ssyymmbbooll__ttaabbllee__ssiizzee, __rrtt__ssyymmbbooll__ssttrriinngg__ttaabbllee,
- __pprroocceedduurree__ttaabbllee, __pprroocceedduurree__ttaabbllee__ssiizzee, __pprroocceedduurree__ssttrriinngg__ttaabbllee,
- __DDYYNNAAMMIICC, __DDYYNNAAMMIICC__LLNNKK, __DDYYNNAAMMIICC__LLIINNKKIINNGG, __BBAASSEE__AADDDDRREESSSS, __GGOOTT__OOFFFFSSEETT,
- __ggpp, __ggpp__ddiisspp, ____rrlldd__oobbjj__hheeaadd, __rrlldd__nneeww__iinntteerrffaaccee, ____eellff__hheeaaddeerr,
- ____pprrooggrraamm__hheeaaddeerr__ttaabbllee, ____ddssoo__ddiissppllaacceemmeenntt, __lliibb__vveerrssiioonn,
- ____llccllddttaa__aaddddrreessss, ____llccllddttaa__ssiizzee - Loader defined symbols in a program
-
- SSYYNNOOPPSSIISS
- eexxtteerrnn iinntt eenndd[[]];;
- eexxtteerrnn iinntt __eenndd[[]];;
- eexxtteerrnn iinntt eetteexxtt[[]];;
- eexxtteerrnn iinntt __eetteexxtt[[]];;
- eexxtteerrnn iinntt eeddaattaa[[]];;
- eexxtteerrnn iinntt __eeddaattaa[[]];;
- eexxtteerrnn iinntt eepprrooll[[]];;
- eexxtteerrnn iinntt __fftteexxtt[[]];;
- eexxtteerrnn iinntt __ffddaattaa[[]];;
- eexxtteerrnn iinntt __ffbbssss[[]];;
- eexxtteerrnn iinntt __pprroocceedduurree__ttaabbllee[[]];;
- eexxtteerrnn iinntt __pprroocceedduurree__ttaabbllee__ssiizzee[[]];;
- eexxtteerrnn iinntt __pprroocceedduurree__ssttrriinngg__ttaabbllee[[]];;
- eexxtteerrnn SSYYMMRR __rrtt__ssyymmbbooll__ttaabbllee[[]];;
- eexxtteerrnn cchhaarr __rrtt__ssyymmbbooll__ttaabbllee__ssiizzee[[]];;
- eexxtteerrnn cchhaarr __rrtt__ssyymmbbooll__ssttrriinngg__ttaabbllee[[]];;
- eexxtteerrnn iinntt __ggpp[[]];;
- eexxtteerrnn iinntt __ggpp__ddiisspp[[]];;
- eexxtteerrnn iinntt __DDYYNNAAMMIICC[[]];;
- eexxtteerrnn iinntt __DDYYNNAAMMIICC__LLIINNKK[[]];;
- eexxtteerrnn iinntt __DDYYNNAAMMIICC__LLIINNKKIINNGG[[]];;
- eexxtteerrnn iinntt __BBAASSEE__AADDDDRREESSSS[[]];;
- eexxtteerrnn iinntt __GGOOTT__OOFFFFSSEETT[[]];;
- eexxtteerrnn iinntt ____rrlldd__oobbjj__hheeaadd[[]];;
- eexxtteerrnn iinntt __rrlldd__nneeww__iinntteerrffaaccee[[]];;
- eexxtteerrnn iinntt ____eellff__hheeaaddeerr[[]];;
- eexxtteerrnn iinntt ____pprrooggrraamm__hheeaaddeerr__ttaabbllee[[]];;
- eexxtteerrnn iinntt ____ddssoo__ddiissppllaacceemmeenntt[[]];;
- eexxtteerrnn iinntt __lliibb__vveerrssiioonn[[]];;
- eexxtteerrnn iinntt ____llccllddttaa__aaddddrreessss[[]];;
- eexxtteerrnn iinntt ____llccllddttaa__ssiizzee[[]];;
-
- IIMMPPLLEEMMEENNTTAATTIIOONN
- IRIX systems
-
- DDEESSCCRRIIPPTTIIOONN
- For the convenience of utilities and other applications that need to
- access an executable in special ways, lldd(1) may create one or more of
- the special symbols listed in the SYNOPSIS. Of these, only the
- symbols __pprroocceedduurree__ttaabbllee __pprroocceedduurree__ssttrriinngg__ttaabbllee, __rrtt__ssyymmbbooll__ttaabbllee,
- __rrtt__ssyymmbbooll__ssttrriinngg__ttaabbllee, ____rrlldd__oobbjj__hheeaadd, ____eellff__hheeaaddeerr,
- ____pprrooggrraamm__hheeaaddeerr__ttaabbllee, __lliibb__vveerrssiioonn, which are described below,
- actually have associated data, which is specially created by lldd(1).
- For each of the remaining special symbols listed in the SYNOPSIS, no
- actual data is associated; only the address of the symbol is
- meaningful. lldd(1) sets the symbol's address to either the location of
- a particular portion of the executable (such as __eetteexxtt, or __eeddaattaa) or
- to the value of some other interesting parameter (such as
- __pprroocceedduurree__ttaabbllee__ssiizzee).
-
- NOTE: To avoid their interpretation as gp-relative data, each of these
- symbols must be declared as an array. Moreover, most of these arrays
- are declared to have elements of type iinntt though do not conclude that
- this imposes any restrictions on the alignment of the addresses.
-
- The symbol versions without a leading underbar may be overridden by
- applications. If the application defines the symbol, the symbol is no
- longer special and the information here is irrelevant for the symbol.
-
- NOTE: Many of the symbols mentioned here are release-specific and may
- change meanings or disappear across releases.
-
- The address of eetteexxtt and __eetteexxtt are the first address above the text
- segment, eeddaattaa and __eeddaattaa are the first address above the initialized
- data region, and eenndd and __eenndd are the first address above the
- uninitialized data region.
-
- The address of __fftteexxtt is the first address in the program text, __ffddaattaa
- is the first address in the initialized data region, and __ffbbssss is the
- first address in the uninitialized data region.
-
- Note that the __fftteexxtt, __eetteexxtt, __eeddaattaa, __fftteexxtt, __ffddaattaa, and __ffbbssss are
- rather questionable things to depend on for programs using dso's or
- having multiple text or data regions. There is no standard definition
- of the meanings of these symbols when there are multiple text or data
- regions present. For example, use of lldd options and spec files can
- result in the creation of multiple text and/or data regions. Most
- programs use dso's and that means there are multiple text, data, and
- bss regions in the running application. Instead of presuming that
- these symbols mean something specific, applications would be better
- off using ____eellff__hheeaaddeerr and ____pprrooggrraamm__hheeaaddeerr__ttaabbllee and
- ____ddssoo__ddiissppllaacceemmeenntt to determine the memory regions of whatever code
- refers to the symbol. That is, from within a dso (or main program),
- ____eellff__hheeaaddeerr refers to the ____eellff__hheeaaddeerr of that dso (or main program).
- One can use ddllooppeenn and ddllssyymm to access the symbols of a different dso
- or, from a dso, of the main program (see the ddllooppeenn man page).
-
- eepprrooll is a symbol that was once used by lliibbpprrooff but is no longer used.
- User code may freely define its own such symbol for any application
- purpose.
-
- In ISO/ANSI C, the eenndd, eeddaattaa, and eetteexxtt symbols are elements of the
- space of names reserved for the user. Thus, by default these symbols
- are not defined by the loader (lldd(1)). If, however, a reference to
- eenndd, eeddaattaa, or eetteexxtt is unsatisfied during the link, it will be
- defined by the loader. The address of the resultant symbol will be
- identical to the address of the symbol of the same name prefixed by an
- underbar. (Thus, if an unsatisfied reference to eenndd remains at the end
- of the link, lldd(1) will satisfy the reference by giving it the same
- address as __eenndd, which is always defined.)
-
- Some symbols have a dso-specific meaning. That is, a query of the
- value within a dso can get a dso-specific value: the values are not
- global, but specific to the main program or dso taking the address of
- the symbol. The dso-specific symbols are: __ggpp, __ggpp__ddiisspp,
- __pprroocceedduurree__ttaabbllee, __pprroocceedduurree__ttaabbllee__ssiizzee, __pprroocceedduurree__ssttrriinngg__ttaabbllee,
- __rrtt__ssyymmbbooll__ttaabbllee, __rrtt__ssyymmbbooll__ttaabbllee__ssiizzee, __rrtt__ssyymmbbooll__ssttrriinngg__ttaabbllee,
- __ddaattaa__iinniitt__ttaabbllee, __DDYYNNAAMMIICC__LLIINNKK, __DDYYNNAAMMIICC__LLIINNKKIINNGG, and __BBAASSEE__AADDDDRREESSSS.
- All the other symbols are global and therefore a single value (that of
- the main program) will be seen from all dsos and the main program
- because of the global symbol resolution rules.
-
- All of the symbols beginning with __ (underbar) are reserved to the
- implementation by ISO/ANSI C rules and it is unwise to attempt to
- define these as global symbols.
-
- __ggpp is the address of the region of global data accessed by offsets of
- the global-pointer register (its address is the run-time value of the
- global-pointer register.)
-
- __ggpp__ddiisspp has the same value as __ggpp.
-
- When execution begins, the program break coincides with __eenndd,, but it
- is reset by the routines bbrrkk(2), mmaalllloocc(3), standard input/output
- (ssttddiioo(3)), the profile (--pp) option of cccc(1), etc. The current value
- of the program break is reliably returned by ssbbrrkk((00)), see bbrrkk(2).
-
- __DDYYNNAAMMIICC__LLIINNKKIINNGG and __DDYYNNAAMMIICC__LLIINNKK are identical. If referred to,
- they have special value generated by the linker: 0 means this code is
- non-shared, 1 means the code is in a KPIC executable, and 2 means the
- code is in a dso.
-
- __DDYYNNAAMMIICC is a symbol which is no longer used.
-
- __BBAASSEE__AADDDDRREESSSS is the virtual address of the first loadable segment in
- the dso/executable.
-
- __GGOOTT__OOFFFFSSEETT is no longer used or set.
-
- __rld_obj_head is set to the virtual address of a pointer to the list
- of dso's in a 32-bit executable. See also <oobbjj..hh> and <oobbjj__lliisstt..hh>
- and rrlldd(1).
-
- __rrlldd__nneeww__iinntteerrffaaccee is set to the address of a function within rrlldd that
- implements various run-time linking facilities. See rrlldd for further
- information.
-
- ____eellff__hheeaaddeerr is set to point to the elf header of the executing object
- or dso.
-
- ____pprrooggrraamm__hheeaaddeerr__ttaabbllee is set to point to the program header table of
- the executing object or dso.
-
- ____ddssoo__ddiissppllaacceemmeenntt is set to point to a 32-bit word (in a 32-bit
- program) which is the amount the executable or dso has been moved by
- rrlldd at run-time.
-
- __lliibb__vveerrssiioonn is set to point to the address of a 32-bit integer. The
- value of the integer is 0 normally. It can be non-zero with
- applications linked -abi and -cckr which can affect slightly the
- behavior of abi applications calling ssccaannff, llddeexxpp, or aattooff.
-
- ____llccllddttaa__aaddddrreessss is set to the address of a special section used to
- keep thread-local data for MP programming. See the MP documentation
- for further information. This symbol is not applicable to
- applications compiled as 64-bit programs.
-
- ____llccllddttaa__ssiizzee is set to the size (in bytes) of the special section
- referred to above. This symbol is not applicable to applications
- compiled as 64-bit programs.
-
- The loader defined symbols __pprroocceedduurree__ttaabbllee, __pprroocceedduurree__ttaabbllee__ssiizzee,
- and __pprroocceedduurree__ssttrriinngg__ttaabbllee refer to data structures of the runtime
- procedure table. The procedure table data structures are built by
- lldd((11)) only if they are referenced. See the include file <ssyymm..hh> for
- the definition of the runtime procedure table and see the include file
- <eexxcceeppttiioonn..hh> for its uses. These symbols are not applicable to
- applications compiled as 64-bit programs.
-
- The loader defined symbols __rrtt__ssyymmbbooll__ttaabbllee, __rrtt__ssyymmbbooll__ttaabbllee__ssiizzee,
- and __rrtt__ssyymmbbooll__ssttrriinngg__ttaabbllee refer to data structures of the runtime
- symbol table. The runtime symbol table structures are built by lldd((11))
- only if they are referenced. The runtime symbol table includes all
- stProc and stGlobal symbols and is used by the kernel for dynamically
- loadable kernel modules. See the <ssyymm..hh> include file for the
- definition of the runtime symbol table. These symbols are not
- applicable to applications compiled as 64-bit programs.
-
- SSEEEE AALLSSOO
- lldd(1), cccc(1), ff7777(1), ppcc(1), rrlldd(1)
-
- bbrrkk(2)
-
- mmaalllloocc(3C)
-
- mmllooaadd(4)
-
- This man page is available only online.
-